Add fossil VCS support to `cargo new`
Fossil is a simple, high-reliability, distributed software configuration management system <https://www.fossil-scm.org/>
I mostly followed https://github.com/rust-lang/cargo/pull/3842 as a template. Like that one, this only adds support for `cargo new`, not for pulling down fossil-hosted dependencies
A problem that i didn't tackle but I'd be willing to is a little more more `trait`ifying of the VCSs. I would need some guidance on that since it looks like git has some more thorough support than e.g. hg does but it looks pretty doable
"git" => VersionControl::Git,
"hg" => VersionControl::Hg,
"pijul" => VersionControl::Pijul,
+ "fossil" => VersionControl::Fossil,
"none" => VersionControl::NoVcs,
n => {
- let err = format!("could not decode '{}' as version control", n);
- return Err(d.error(&err));
+ let value = de::Unexpected::Str(n);
+ let msg = "unsupported version control system";
+ return Err(de::Error::invalid_value(value, &msg));
}
})
}